package com.sinba.common.sms;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.URLDecoder;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.URI;
import org.apache.commons.httpclient.methods.GetMethod;

import com.sinba.common.util.StringUtils;

public class HttpSender {
	public static String batchSend(String url,String account,String pswd,String mobile,String msg,boolean needstatus,
			String extno) throws Exception{
		HttpClient client=new HttpClient();
		GetMethod method=new GetMethod();
		try{
			URI base=new URI(url,false);
			method.setURI(new URI(base,"HttpBatchSendSM",false));
			method.setQueryString(new NameValuePair[]{new NameValuePair("account",account),
					new NameValuePair("pswd",pswd),new NameValuePair("mobile",mobile),
					new NameValuePair("needstatus",String.valueOf(needstatus)),new NameValuePair("msg",msg),
					new NameValuePair("extno",extno),});
			int result=client.executeMethod(method);
			if(result==HttpStatus.SC_OK) {
				InputStream in=method.getResponseBodyAsStream();
				ByteArrayOutputStream baos=new ByteArrayOutputStream();
				byte[] buffer=new byte[1024];
				int len=0;
				while((len=in.read(buffer))!=-1){
					baos.write(buffer,0,len);
				}
				return URLDecoder.decode(baos.toString(),"UTF-8");
			}else{
				throw new Exception("HTTP ERROR Status: "+method.getStatusCode()+":"+method.getStatusText());
			}
		}finally{
			method.releaseConnection();
		}
	}
	
	public static void sendSms(String mobiles,String msgs){
		String url = "http://222.73.117.158/msg/";// 应用地址
		String account = "kebaite01";// 账号
		String pswd = "Tch1234567";// 密码
		String mobile = mobiles;// 手机号码，多个号码使用","分割
		String msg = msgs;// 短信内容
		//msg = "您好，您的R000002订单已交易成功，请登录系统查看详情!";// 短信内容
		boolean needstatus = true;// 是否需要状态报告，需要true，不需要false
		String extno = null;// 扩展码
		if(StringUtils.hasText(mobiles) && StringUtils.hasText(msgs)){
			try {
				String returnString = HttpSender.batchSend(url, account, pswd, mobile, msg, needstatus, extno);
				System.out.println(returnString);
				// TODO 处理返回值,参见HTTP协议文档
			} catch (Exception e) {
				// TODO 处理异常
				e.printStackTrace();
			}
		}
		
	}
	
}
